8. 字符串转换整数 (atoi)

8. 字符串转换整数 (atoi)

Similar Question

393. UTF-8 编码验证 - 力扣(LeetCode)
Loading Question... - 力扣(LeetCode)

Solution Tips

方案一: 模拟

var myAtoi = function(s) {
    // 过滤前导空格
    let index = 0;
    while (s[index] === ' ') {
        index++;
    }

    // 此时的为非空格, 确认符号
    let positive = true;
    if (s[index] === '-') {
        positive = false;
        index++;
    }
    else if (s[index] === '+') { 
        index++
    }

    let nums = [];
    // 此时的i为第一个有效的数字
    for (let i = index; i < s.length; i++) {
        if (/\d/.test(s[i])) {
            nums.push(s[i]);
        }
        else {
            break;
        }
    }

    // 截断
    if (positive) {
        return +nums.join('') < Math.pow(2, 31) - 1 ? +nums.join('') : Math.pow(2, 31) - 1;
    }
    else {
        return -nums.join('') < -Math.pow(2, 31) ? -Math.pow(2, 31): -nums.join('');
    }
};

方案二: 状态机